Tamper-resistant software is software that is difficult to change, tamper with, and/or attack. Code obfuscation is one technique for achieving tamper-resistant software. Generally, the goal of code obfuscation is to make it difficult for attackers to determine what is happening in a block of code. If attackers use debuggers or emulators to trace instructions, code obfuscation can make the code difficult to understand or change.
According to one code obfuscation technique, additional instructions are added to a program. The instructions are added to confuse attackers and/or produce ancillary results, which must be verified before execution can continue past certain points. One problem with this method of code obfuscation is that it typically requires code to be modified by hand. Moreover, it may require existing software to be completely restructured, especially if parts of the software must run in a tamper resistant interpretive environment with system service restrictions.